// 引入http模块和文件系统模块
const http = require('http');
const fs = require('fs');
const path = require('path');

// 1. 创建data.txt文件（若已存在则覆盖，写入初始内容）
fs.writeFileSync('data.txt', '欢迎访问流服务！这是来自data.txt的内容。\nNode.js流可以高效传输数据。');

// 2. 创建HTTP服务
const server = http.createServer((req, res) => {
  // 仅处理根路径请求
  if (req.url === '/') {
    // 3. 创建data.txt的可读流
    const filePath = path.resolve(__dirname, 'data.txt');
    const readableStream = fs.createReadStream(filePath, 'utf8');

    // 4. 设置响应头（文本类型）
    res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });

    // 5. 将流数据响应到浏览器
    readableStream.pipe(res);

    // 监听流错误事件
    readableStream.on('error', (err) => {
      res.writeHead(500, { 'Content-Type': 'text/plain' });
      res.end(`读取文件错误: ${err.message}`);
    });

    // 监听响应结束事件
    res.on('finish', () => {
      console.log('数据已成功响应到浏览器');
    });
  } else {
    // 处理404请求
    res.writeHead(404, { 'Content-Type': 'text/plain' });
    res.end('404 页面未找到');
  }
});

// 6. 监听8081端口
const port = 8081;
server.listen(port, () => {
  console.log(`服务已启动，访问地址：http://localhost:${port}`);
});